]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st/texture-cache: Monitor GtkIconTheme changes
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Thu, 1 Aug 2019 23:54:42 +0000 (20:54 -0300)
committerFlorian Müllner <florian.muellner@gmail.com>
Thu, 8 Aug 2019 15:22:44 +0000 (15:22 +0000)
The texture cache, right now, only monitors for
complete theme changes. If the contents of the
icon theme change, however, the texture cache
isn't properly invalidated.

This manifests itself as a randomly reproducible
bug when installing an app; the app icon may be
the fallback forever, or as long as something else
updates the icon theme.

Watch for the GtkIconTheme:changed signal, and
evict the texture cache when the theme changes.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/661

src/st/st-texture-cache.c

index eec28007b34bd2152b204dc0f06be4978b74df26..bf54c651402e3b04bb88f4925c312d6e6f267b2e 100644 (file)
@@ -150,6 +150,14 @@ on_icon_theme_changed (StSettings     *settings,
   g_signal_emit (cache, signals[ICON_THEME_CHANGED], 0);
 }
 
+static void
+on_gtk_icon_theme_changed (GtkIconTheme   *icon_theme,
+                           StTextureCache *self)
+{
+  st_texture_cache_evict_icons (self);
+  g_signal_emit (self, signals[ICON_THEME_CHANGED], 0);
+}
+
 static void
 st_texture_cache_init (StTextureCache *self)
 {
@@ -160,6 +168,8 @@ st_texture_cache_init (StTextureCache *self)
   self->priv->icon_theme = gtk_icon_theme_new ();
   gtk_icon_theme_add_resource_path (self->priv->icon_theme,
                                     "/org/gnome/shell/theme/icons");
+  g_signal_connect (self->priv->icon_theme, "changed",
+                    G_CALLBACK (on_gtk_icon_theme_changed), self);
 
   settings = st_settings_get ();
   g_signal_connect (settings, "notify::gtk-icon-theme",